package com.zenithmind.version.pojo.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 分支实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("version_branch")
@Schema(description = "分支实体")
public class Branch extends BaseEntity {

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 分支名称
     */
    @Schema(description = "分支名称")
    private String name;

    /**
     * 分支描述
     */
    @Schema(description = "分支描述")
    private String description;

    /**
     * 分支类型（1-主分支，2-开发分支，3-功能分支，4-修复分支，5-发布分支）
     */
    @Schema(description = "分支类型（1-主分支，2-开发分支，3-功能分支，4-修复分支，5-发布分支）")
    private Integer type;

    /**
     * 分支状态（0-删除，1-活跃，2-合并，3-保护）
     */
    @Schema(description = "分支状态（0-删除，1-活跃，2-合并，3-保护）")
    private Integer status;

    /**
     * 源分支ID
     */
    @Schema(description = "源分支ID")
    private String sourceBranchId;

    /**
     * 源分支名称
     */
    @Schema(description = "源分支名称")
    private String sourceBranchName;

    /**
     * 最新提交ID
     */
    @Schema(description = "最新提交ID")
    private String latestCommitId;

    /**
     * 最新提交哈希
     */
    @Schema(description = "最新提交哈希")
    private String latestCommitHash;

    /**
     * 最新提交消息
     */
    @Schema(description = "最新提交消息")
    private String latestCommitMessage;

    /**
     * 最新提交作者
     */
    @Schema(description = "最新提交作者")
    private String latestCommitAuthor;

    /**
     * 最新提交时间
     */
    @Schema(description = "最新提交时间")
    private LocalDateTime latestCommitTime;

    /**
     * 提交数量
     */
    @Schema(description = "提交数量")
    private Integer commitCount;

    /**
     * 领先提交数
     */
    @Schema(description = "领先提交数")
    private Integer aheadCount;

    /**
     * 落后提交数
     */
    @Schema(description = "落后提交数")
    private Integer behindCount;

    /**
     * 是否受保护（0-否，1-是）
     */
    @Schema(description = "是否受保护（0-否，1-是）")
    private Integer isProtected;

    /**
     * 是否默认分支（0-否，1-是）
     */
    @Schema(description = "是否默认分支（0-否，1-是）")
    private Integer isDefault;

    /**
     * 创建者ID
     */
    @Schema(description = "创建者ID")
    private String creatorId;

    /**
     * 创建者名称
     */
    @Schema(description = "创建者名称")
    private String creatorName;

    /**
     * 合并到分支ID
     */
    @Schema(description = "合并到分支ID")
    private String mergedToBranchId;

    /**
     * 合并时间
     */
    @Schema(description = "合并时间")
    private LocalDateTime mergedTime;

    /**
     * 合并者ID
     */
    @Schema(description = "合并者ID")
    private String mergedBy;
}
